package ControleAcademico.View;

import java.util.ArrayList;
import java.util.Scanner;

import ControleAcademico.Model.Dao.ProfessorImpl;
import ControleAcademico.Model.Dao.DisciplinaImpl;
import ControleAcademico.Model.Pojo.Aluno;
import ControleAcademico.Model.Pojo.Disciplina;
import ControleAcademico.Model.Pojo.HistoricoDisciplina;
import ControleAcademico.Model.Pojo.Professor;
import ControleAcademico.Model.Pojo.Turma;

public class MenuProfessor {

	private ProfessorImpl professorImpl;
	private DisciplinaImpl disciplinaImpl;
	
	public MenuProfessor(ProfessorImpl professorImpl,DisciplinaImpl disciplinaImpl) {
		this.professorImpl = professorImpl;
		this.disciplinaImpl = disciplinaImpl;
	}

	public void cadastrar () {
		
		int flag = 0;
		Scanner entrada = new Scanner(System.in);
		
		ArrayList<Disciplina> listaDisciplinas = new ArrayList<Disciplina>();
		
 
		while (flag != -1) {
		
			
			boolean continua = true;
			int options = 0;
			
			int i = 1;
			
			for(int a=0;a<50;a++){
				System.out.println("");
			}
			
			System.out.println("\n\nLista de disciplinas:");
			for (Disciplina disciplinas : disciplinaImpl.getListaDeDisciplinas()) {
				System.out.println(i + " - " + disciplinas.getNome() + "\n" );
				i++;
			}
				
			while(continua){	
				
				System.out.println("\nPor favor, informe uma disciplina para o professor:\n");
				String leitura = entrada.nextLine();
				options = Integer.parseInt(leitura);
				int j = 1;	
				
				if (options > 0 && options < i){
						
					for (Disciplina disciplinas : disciplinaImpl.getListaDeDisciplinas()){
							
						if (j == options){
							boolean verifica = true;
							for(Disciplina n : listaDisciplinas){
								if(disciplinas.getId() == n.getId()){
									verifica = false;
									System.out.println("Disciplina já cadastrada neste professor!\n");
									break;
								}
							}
							if(verifica){
								listaDisciplinas.add(disciplinas);
								
							}
							
							break;
						}else{
							j++;
						}	
					}
				}
				
				System.out.println("\nDeseja adicionar mais alguma disciplina para esse professor? S/N\n");
				leitura = entrada.nextLine();
				
				if(leitura.equals("N") || leitura.equals("n")){
					continua = false;
				}
				
				
			}
			
			for(int a=0;a<50;a++){
				System.out.println("");
			}	
			
			System.out.println("\nInforme o nome do professor: ");
			String nome = entrada.nextLine();		
			
			System.out.println("\nInforme o CPF: ");
			String cpf = entrada.nextLine();	
			
			boolean verifica = true;
			for(Professor n : professorImpl.getListaDeProfessores()){
				if(n.getCpf().equals(cpf)){
					verifica = false;
					System.out.println("Já existe Professor com CPF informado!\n");
					break;
				}
			}
			
			System.out.println("\nInforme o departamento: ");
			String departamento = entrada.nextLine();	
			
			System.out.println("\n");
			
			boolean conti = true;

			while(conti){
				System.out.println("\n\nProfessor cadastrado com sucesso!\n\n\n\n");
				System.out.println("\n\nAperte qualquer tecla para continuar ...\n");
				String leitura = entrada.nextLine();
				conti = false;
			}
			
			for(int l = 0; l<50;l++){
				System.out.println();
			}

			
			System.out.println("\nDeseja adicionar mais professores? S/N: ");
			String leitura = entrada.nextLine();
			if(leitura.equals("N") || leitura.equals("n")){
				flag = -1;
			}
			
			if(verifica){	
				Professor professorNovo = new Professor (nome, cpf, listaDisciplinas,departamento);
				professorImpl.salvar(professorNovo,0);
				listaDisciplinas.clear();
			}
			
				
		}
				
	}
	
	public void consultarDisciplinasLecionadas(){
		int i = 1;
		int j = 1;
		int options = 0;
		int cont = 0;
		Scanner entrada = new Scanner(System.in);
		Professor professorEscolhido = null;
		ArrayList<String> disciplinasLecionadas = new ArrayList<String>();;
		ArrayList<Professor> auxiliarProfessor = professorImpl.getListaDeProfessores();
	

		for(int a=0;a<50;a++){
			System.out.println("");
		}
				
		System.out.println("Lista de professores\n");
				
		for (Professor professor : auxiliarProfessor) {
			
			System.out.println(i + " - " + professor.getNome() + "\n" );
			i++;
		}
		
		System.out.println("Por favor, informe qual professor você é:");
		String entrou = entrada.nextLine();
		options = Integer.parseInt(entrou);
		
	
		
		if (options > 0 && options < i){
			
			for (Professor k : auxiliarProfessor){
	
				if (j == options){
					professorEscolhido = k;
					break;
				}else{
					j++;
				}	
			}
		}
	
		for (Turma k : professorEscolhido.getTurmas()) {
	
			if(!(disciplinasLecionadas.contains(k.getNomeDisciplina()))){
				disciplinasLecionadas.add(k.getNomeDisciplina());
				cont++;
			}
		}
		
		System.out.println("\nNúmero de Disciplinas já Lecionadas pelo Professor "+ professorEscolhido.getNome() + " é " + cont + ".");
	}
	
	
	
	
}